package br.com.ufrj.dcc.ad.simulacao.modelo;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Fila {
	
	public static final int FILA_FIFO = 0;
	public static final int FILA_LIFO = 1;
	
	private Integer tipo;
	private List<Cliente> filaClientes;
	
	public Fila(Integer tipo) {
		this.tipo = tipo;
		this.filaClientes = new ArrayList<Cliente>();
	}
	
	public List<Cliente> getFilaClientes() {
		return filaClientes;
	}
	
	public void esvaziarFila() {
		this.filaClientes.clear();
	}
	
	public Comparator<Cliente> getComparetor() {
		if (tipo.equals(FILA_FIFO)) {
			return new Comparator<Cliente>() {
				@Override
				public int compare(Cliente c1, Cliente c2) {
					if (c1.getPrioridade().equals(c2.getPrioridade())) {
						return c1.getIdCliente().compareTo(c2.getIdCliente());
					}
					
					return -1*c1.getPrioridade().compareTo(c2.getPrioridade());
				}
			};
		} else {
			return new Comparator<Cliente>() {
				@Override
				public int compare(Cliente c1, Cliente c2) {
					if (c1.getPrioridade().equals(c2.getPrioridade())) {
						return -1*c1.getIdCliente().compareTo(c2.getIdCliente());
					}
					
					return -1*c1.getPrioridade().compareTo(c2.getPrioridade());
				}
			};
		}
	}
}
